Processing media content in a messaging system

ABSTRACT

Systems and methods provide for a server computer to receive a request from a first device for instructions to process media content items, the request including a unique identifier for each of the media content items. The server computer determines a subset of the media content items to be processed by the first device. The server computer generates instructions for processing the subset of the media content items and sends the instructions to the first device. The server computer receives a request from the first device to share the media content items with a second device, the request including the unique identifier for each of the media content items to be shared, and processed media content items for the subset of the media content items. The server computer generates a message including processed media content items for the media content items to send to the second device.

BACKGROUND

Sharing media content such as audio, images, and video between userdevices (e.g., mobile devices, personal computers, etc.) may entailconverting the media content to a format that can be consumed by thereceiving device and a large data transfer over a network, depending onthe size of a media content item. For example, a video may need to betranscoded into a different format and/or a smaller sized file.Transcoding each media content item may take significant time andprocessing power. When a user shares multiple media content items at onetime, the time and processing power may exceed the capabilities of theuser device and the expectations of the user. Moreover, there may be alimit to the amount of items that may be shared at one time due toprocessing limitation of the user device.

BRIEF DESCRIPTION OF THE DRAWINGS

Various ones of the appended drawings merely illustrate exampleembodiments of the present disclosure and should not be considered aslimiting its scope.

FIG. 1 is a block diagram illustrating a networked system, according tosome example embodiments.

FIG. 2 is a flowchart illustrating aspects of a method, according tosome example embodiments.

FIG. 3 is an example display on a user device, according to some exampleembodiments.

FIG. 4 is a block diagram illustrating an example of a softwarearchitecture that may be installed on a machine, according to someexample embodiments.

FIG. 5 illustrates a diagrammatic representation of a machine, in theform of a computer system, within which a set of instructions may beexecuted for causing the machine to perform any one or more of themethodologies discussed herein, according to an example embodiment.

DETAILED DESCRIPTION

Systems and methods described herein relate to processing media contentitems to be shared between devices via a messaging system. For example,a user may wish to share one or more videos, audio content, images, andso forth with one or more other users. Embodiments described hereinprovide for receiving, processing, and sending media content items inmessages to and from devices operated by users in an efficient mannerthat minimizes processing power and time on the user device (e.g., thesending device and the receiving device). For example, the originalvideos, images, etc. created by a user are typically in a high qualityformat that is not suitable for sharing or viewing on a user device.Converting the high quality media content item on the user device mayprove taxing on the processing power of the device and may take moretime than expected by a user. For example, and sending user may notexpect to wait five minutes to send a video that is only two minuteslong, and a receiving user may not expect to wait five minutes todownload and view a video that is only two minutes long.

Moreover, a user may want to send a plurality of media content items toone or more users. For example, a user may take various videos andphotographs on his vacation. The user may want to share the best videosand photographs from his vacation with his friends and family. The usermay select the videos and photographs to share with his friends andfamily. If the videos and photographs were sent in the original format,it may take a long time to complete the data transfer from the userdevice to a backend server of a messaging system, and then it may take along time and processing power for the receiving user device to load thelarge files for the receiving user to view them. This may beparticularly taxing on mobile devices with more limited processing powerand memory.

Example embodiments described herein provide for a more efficient systemfor processing media content to be sent to user devices and received byuser devices by using a hybrid approach for processing and transferringmedia content items. Instead of depending solely on processing power ofa user device, time and processing power of the user device may beminimized by utilizing the processing power of a server when possible.For example, the server computer can determine whether any of aplurality of media content items has been previously processed and onlyinstruct the user device to process those media content items that havenot yet been processed. In this way, redundancy may be reduced forprocessing media content items and data transfer of media content itemsto optimize processing of media content items. Moreover, the speed ofmedia content processing and data transfer may be increased. Also, moreadvanced processing may be utilized on the server computer to producehigher quality media content items. Furthermore, less processing timeand power may be required by the user device.

In one example embodiment, a server computer may receive a request froma first device for instructions to process a plurality of media contentitems, the request including a unique identifier for each of theplurality of media content items. The server computer may determine,using the unique identifier for each of the plurality of media contentitems, a subset of the plurality of media content items to be processedby the first device. The server computer may generate instructions forprocessing the subset of the plurality of media content items by thefirst device and send the instructions to the first device. The servercomputer may receive a request from the first device to share theplurality of media content items with a second device, the requestincluding the unique identifier for each of the plurality of mediacontent items to be shared, and processed media content items for thesubset of the plurality of media content items, and send the generatedmessage to the second device.

FIG. 1 is a block diagram illustrating a networked system 100, accordingto some example embodiments, configured to process media content itemsand send and receive messages which include the processed media content.In one example embodiment, the system is a messaging system configuredto receive a plurality of messages from a plurality of users, processmedia content contained in the messages, and send messages to one ormore users with the processed media content. The system 100 may includeone or more client devices such as client device 110. The client device110 may also be referred to herein as a user device. The client device110 may comprise, but is not limited to, a mobile phone, desktopcomputer, laptop, portable digital assistant (PDA), smart phone, tablet,ultra book, netbook, laptop, multi-processor system,microprocessor-based or programmable consumer electronic, game console,set-top box, computers in a vehicle, or any other communication devicethat a user may utilize to access the networked system 100. In someembodiments, the client device 110 may comprise a display module (notshown) to display information (e.g., in the form of user interfaces). Infurther embodiments, the client device 110 may comprise one or more oftouch screens, accelerometers, gyroscopes, cameras, microphones, globalpositioning system (GPS) devices, and so forth. The client device 110may be a device of a user that is used to create content media itemssuch as video, images (e.g., photographs), audio, and send and receivemessages containing such media content items to and from other users.

One or more users 106 may be a person, a machine, or other means ofinteracting with the client device 110. In example embodiments, the user106 may not be part of the system 100, but may interact with the system100 via the client device 110 or other means. For instance, the user 106may provide input (e.g., touch screen input or alphanumeric input) tothe client device 110 and the input may be communicated to otherentities in the system 100 (e.g., third party servers 130, server system102, etc.) via the network 104. In this instance, the other entities inthe system 100, in response to receiving the input from the user 106,may communicate information to the client device 110 via the network 104to be presented to the user 106. In this way, the user 106 may interactwith the various entities in the system 100 using the client device 110.

The system 100 may further include a network 104. One or more portionsof network 104 may be an ad hoc network, an intranet, an extranet, avirtual private network (VPN), a local area network (LAN), a wirelessLAN (WLAN), a wide area network (WAN), a wireless WAN (WWAN), ametropolitan area network (MAN), a portion of the Internet, a portion ofthe Public Switched Telephone Network (PSTN), a cellular telephonenetwork, a wireless network, a WiFi network, a WiMax network anothertype of network or a combination of two or more such networks.

The client device 110 may access the various data and applicationsprovided by other entities in the system 100 via web client 112 (e.g., abrowser, such as the Internet Explorer® browser developed by Microsoft®Corporation of Redmond, Wash. State) or one or more client applications114. The client device 110 may include one or more applications 114(also referred to as “apps”) such as, but not limited to, a web browser,messaging application, electronic mail (email) application, anc-commerce site application, a mapping or location application, mediacontent editing application, and the like.

In one example, a client application 114 may be a messaging applicationthat allows a user 106 to take a photograph or video, add a caption, orotherwise edit the photograph or video, and then send the photograph orvideo to another user. The message may be ephemeral and be removed froma receiving user device after viewing or after a predetermined amount oftime (e.g., 10 seconds, 24 hours, etc.). The messaging application mayfurther allow a user 106 to create a gallery. A gallery may be acollection of photos and videos which may be viewed by other users“following” the user's gallery (e.g., subscribed to view and receiveupdates in the user's gallery). The gallery may also be ephemeral (e.g.,lasting 24 hours, lasting a duration of an event (e.g., during a musicconcert, sporting event, etc.), or other predetermined time).

An ephemeral message may be associated with a message durationparameter, the value of which determines an amount of time that theephemeral message will be displayed to a receiving user of the ephemeralmessage by the client application 110. The ephemeral message may befurther associated with a message receiver identifier and a messagetimer. The message timer may be responsible for determining the amountof time the ephemeral message is shown to a particular receiving useridentified by the message receiver identifier. For example, theephemeral message may only be shown to the relevant receiving user for atime period determined by the value of the message duration parameter.

In another example, the messaging application may allow a user 106 tostore photographs and videos and create a gallery that is not ephemeraland that can be sent to other users. For example, to assemblephotographs and videos from a recent vacation to share with friends andfamily.

In some embodiments, one or more applications 114 may be included in agiven one of the client device 110, and configured to locally providethe user interface and at least some of the functionalities with theapplication 114 configured to communicate with other entities in thesystem 100 (e.g., server system 102), on an as needed basis, for dataand/or processing capabilities not locally available (e.g., accesslocation information, to authenticate a user 106, to verify a method ofpayment, access media content stored on a server, sync media contentbetween the client device 110 and a server computer, etc.). Conversely,one or more applications 114 may not be included in the client device110, and then the client device 110 may use its web browser to accessthe one or more applications hosted on other entities in the system 100(e.g., server system 102).

A server system 102 may provide server-side functionality via thenetwork 104 (e.g., the Internet or wide area network (WAN)) to one ormore client devices 110. The server system 102 may include anapplication programming interface (API) server 120, a messagingapplication server 122, and a media content processing server 124, whichmay each be communicatively coupled with each other and with one or moredata storage(s) 126.

The server system 102 may be a cloud computing environment, according tosome example embodiments. The server system 102, and any serversassociated with the server system 102, may be associated with acloud-based application, in one example embodiment. The one or more datastorages 126 may be storage devices that store information such asuntreated media content, original media content from users 106 (e.g.,high quality media content), processed media content (e.g., mediacontent that is formatted for sharing with client devices 110 andviewing on client devices 110), user information, user deviceinformation, and so forth. The one or more data storages 126 may includecloud-based storage external to the server system 102 (e.g., hosted byone or more third party entities external to the server system 102). Thedata storages 126 may include databases, blob storages, and so forth.

The media content processing server 124 may provide functionality toperform various processing of media content items. The media contentprocessing server 124 may access one or more data storages 126 toretrieve stored data to use in processing media content and to storeresults of processed media content.

The messaging application server 122 may be responsible for generationand delivery of messages between users 106 of client devices 110. Themessaging application server 122 may utilize any one of a number ofmessage delivery networks and platforms to deliver messages to users106. For example, the messaging application server 122 may delivermessages using electronic mail (e-mail), instant message (IM). ShortMessage Service (SMS), text, facsimile, or voice (e.g., Voice over IP(VoIP)) messages via wired (e.g., the Internet), plain old telephoneservice (POTS), or wireless networks (e.g., mobile, cellular, WiFi, LongTerm Evolution (LTE), Bluetooth).

As explained above, a user 106 may wish to share various media contentitems (e.g., videos, audio content, images, etc.) with one or more otherusers. For example, the user 106 may use the client device 110 or otherdevice to take various videos and photographs on his vacation. The user106 may want to share the best videos and photographs from his vacationwith his friends and family. The user 106 may utilize a clientapplication 114 on the client device 110, such as a messagingapplication, to select the media content items that he would like toshare. The user 106 may also edit the various media content items usingthe client application 114. For example, the user 106 may add text tothe media content item, choose an overlay for the media content item(labels, drawings, other artwork, etc.), may draw on the media contentitem, crop or alter (e.g., red-eye reduction, focus, color adjustment,etc.) the media content item, and so forth. A media content item that is“untreated” refers to a media content item that has not been editedusing the client application 114.

The user 106 may select the media content items that he would like toshare with his friends and family via the client application 114. Oncehe has selected the media content items, he may indicate that he wouldlike to share the media content items. For example, he may choose anoption on a user interface of the client application 114 (e.g., menuitem, button, etc.) to indicate that he wishes to share the mediacontent items. FIG. 3 shows an example display 306 on a user device 302where a user 106 may select media content items (e.g., 308-311) to shareand then select a button 304 to share the selected media content items.As explained above, the media content items may be videos, photographs,and so forth. Also, a user 106 may select a gallery to share thatcomprises multiple videos, photographs, etc. For example, items 308-311may each represent a gallery of media content items.

The client device 110 receives the indication to share the media contentitems from the user 106 and generates a request for instructions toprocess the media content items. For example, the client device 110 maygenerate a request that includes a unique identifier associated witheach of the media content items that the user 106 wishes to share torequest instructions from a server system 102 for whether or not theclient device 110 should process any of the media content items. Forexample, a user 106 may choose ten media content items comprising sixvideos and four images. The user 106 may have previously shared two ofthe videos and all of the images. Thus, the client device 110 would onlyneed to process four of the videos, instead of all of the videos andimages.

Processing a media content item may comprise converting the mediacontent item into a format that may be consumed by a receiving device.For example, video content may be transcoded from one format, to anotherformat that is compatible with a receiving device. In another example,video content may be transcoded so that it is a reduced size for datatransfer and viewing on a receiving device. In yet another example, animage may be converted to a format that is compatible with a receivingdevice and/or reduced in size for data transfer and viewing on areceiving device.

FIG. 2 is a flow chart illustrating aspects of a method 200, accordingto some example embodiments, for processing media content items. Forillustrative purposes, method 200 is described with respect to thenetworked system 100 of FIG. 1. It is to be understood that method 200may be practiced with other system configurations in other embodiments.

In operation 202, the server system 102 (e.g., via API server 120)receives the request from the client device 110 for instructions toprocess a plurality of media content items from the client device 110.As explained above, the request may include a unique identifier for eachof the plurality of media content items.

In one example, the request may further include untreated media contentitems. For example, a user 106 may want to send original media contentitems that he did not edit or alter using the client application 114. Inthis case, the server system 102 may process the untreated media contentitems.

For example, the client application 114 may provide a number of creativetools for the user 106 to use to edit a media content item, as explainedabove. If the user 106 has used the creative tools on the clientapplication 114 to edit a media content item, then the media contentitem may need to be processed on the client device 110 in the event thatthe server system 102 does not support such creative tools. If the user106 has not used the creative tools of the client application 114, thenthe server system 102 may process the media content item. In anotherexample, the server system 102 may support the creative tools used bythe user 106 to alter or edit the media content item. In this example,the server system 102 may process the media content item even though ithas been altered or edited.

In operation 204, the server system 102 (e.g., via media contentprocessing server 124) determines which media content items are to beprocessed by the client device 110. The media content items to beprocessed by the client device 110 may be all of the plurality of mediacontent items, or a subset of the plurality of media content items. Forexample, the server system 102 accesses one or more data storages 126 tolook up the unique identifier associated with each media content item todetermine whether or not the media content item already exists (e.g., isstored) in the one or more data storages 126. In one example, the user106 may have previously sent one or more of the media content items toanother user (e.g., individually or as part of a group of media contentitems) and thus, the media content items may have already been processedand/or the server system 102 may have previously stored the mediacontent items in the one or more data storages 126. In another example,the user 106 may have saved or backed up one or more media content itemsto the one or more data storages 126. Using the example from above, theplurality of media content items may comprise six videos and fourimages. The server system 102 may determine that only four videos out ofa list of six videos and four images are to be processed by the clientdevice 110 because the other two videos and the four images are alreadystored in the one or more data storages 126.

In one example embodiment, the server system 102 may store only theoriginal media content item from the user 106, in the one or more datastorages 126. The server system 102 may then process the original mediacontent item when needed (e.g., to prepare to send to another user). Inanother example, the server system 102 may store only the processedmedia content item in the one or more data storages 126. In yet anotherexample, the server system 102 may store both the original media contentitem from the user 106 and the processed media content item, in the oneor more data storages 126. For example, the server system 102 mayprocess each original media content item received from the user 106 andstore both the original media content item and the processed mediacontent item in the one or more data storages 126. In the alternative,the server system 102 may store the original media content item from theuser 106 and only process and store the processed media content itemwhen a user 106 requests to share the media content item.

If the request for instructions includes untreated media content items,or media content items that can be processed by the server system 102(e.g., media content items that were altered or edited by creative toolssupported by the server system 102), the server system 102 may store theuntreated media content items in one or more data storages 126. Theserver system 102 may process these media content items and also storethe processed version of the media content items, or may process themedia content items once it receives a request to share the mediacontent items, as explained below.

In operation 206, the server system 102 generates instructions forprocessing the of media content items to be processed by the clientdevice 110 (e.g., the media content items that are not stored in one ormore data storages 126). For example, the server system 102 may generatea message that includes instructions to process a subset of theplurality of media content items that the user 106 wishes to share(e.g., only four videos out of a list of six videos and four images).The message may comprise the unique identifiers for each media contentitem of the subset of the plurality of media content items. In operation208 the server system 102 sends the instructions (e.g., message) to theclient device 110.

The client device 110 receives the instructions to process the subset ofthe plurality of media content items. The client device 110 processesthe media content items and generates a request to share the mediacontent items that that the user 106 indicated that he wished to share.The request may include the unique identifier for each of the pluralityof media content items to be shared, and the processed media contentitems for the subset of plurality of media content items that wereprocessed by the client device 110.

The request to share media content items may further include untreatedmedia content items. For example, instead of the client device 110sending untreated media content items (and/or media content items thatcan be processed by the server computer because the media content itemsthat were altered or edited by creative tools supported by the serversystem 102) in the request for instructions for processing media contentitems, the client device 110 may send the media content items to theserver system 102 in the request to share the media content items. Therequest may include an indication that these media content items shouldbe processed by the server system 102.

In operation 210, the server system 102 (e.g., via API server 120)receives the request to share the media content items with a seconddevice. The server system 102 may store the processed media contentitems in one or more data storages 126. The server system 102 may storethe untreated media content items in one or more data storages 126. Theserver system 102 may process these untreated media content items andalso store the processed version of the untreated media content items.

The server system 102 may perform authentication and validationprocesses before preparing the media content items for sharing. Forexample, the server system 102 may make sure that the request isreceived from an authorized and authenticated user 106. The serversystem 102 may validate the media content items by making sure theunique identifiers are valid identifiers (e.g., they exist in thesystem), verify that a media content items exists for each uniqueidentifier, making sure each media content item is a proper format forsharing, and so forth.

In operation 212, the server system 102 generates a message with therequested media content items to share with the second device. Forexample, the server system 102 may access one or more data storages 126to retrieve each processed media content item to be shared. The serversystem 102 may process any media content items that may still need to beprocessed (e.g., media content items that are stored in the one or moredata storages 126 in original format and have not yet been processed).The server system 102 prepares a message including the processed mediacontent items to be shared.

In operation 214, the server system 102 sends the generated message tothe second device 110. For example, the server system 102 may send thegenerated message (including any media attachments) directly or relaythe generated message to an API (e.g., API server 120 or other server)that is responsible for handling communication with the second device110. In one example, the generated message may include instructions inthe form of a predefined messaging protocol, such as a JSON/XML payload,that includes messages and/or URLs to the actual media attachments.

The second device 110 receives the generated message and may store themessage locally on the device. The second device 110 may have one ormore client applications 114 (e.g., a messaging application) that a user106 of the second device 110 may use to access and view the message. Theuser 106 may select the message to be viewed and the second device 114may cause the message and the media content items to be displayed to theuser 106.

Example embodiments may further include mechanisms to monitor userbehavior related to which media content items are locally stored versusin off-line storage (e.g., cloud-based storage), which media contentitems are shared out of the stored media content items, how frequentlythe same media content items are shared, etc. This data may be storedand used to anticipate user behavior and optimize the flow ofprocessing. For example, if the server system 102 determines aparticular user 106 typically shares media content items related to aspecific subject matter (e.g., sporting event, children), the serversystem 102 may process some of these media content items in advance(e.g., before a user 106 decides to share the media content items) sothat they are already processed when the user 106 decides to share themedia content items.

FIG. 4 is a block diagram 400 illustrating software architecture 402,which can be installed on any one or more of the devices describedabove. For example, in various embodiments, client devices 110 andserver systems 102, 120, 122, and 124 may be implemented using some orall of the elements of software architecture 402. FIG. 4 is merely anon-limiting example of a software architecture, and it will beappreciated that many other architectures can be implemented tofacilitate the functionality described herein. In various embodiments,the software architecture 402 is implemented by hardware such as machine500 of FIG. 5 that includes processors 510, memory 530, and I/Ocomponents 550. In this example, the software architecture 402 can beconceptualized as a stack of layers where each layer may provide aparticular functionality. For example, the software architecture 402includes layers such as an operating system 404, libraries 406,frameworks 408, and applications 410. Operationally, the applications410 invoke application programming interface (API) calls 412 through thesoftware stack and receive messages 414 in response to the API calls412, consistent with some embodiments.

In various implementations, the operating system 404 manages hardwareresources and provides common services. The operating system 404includes, for example, a kernel 420, services 422, and drivers 424. Thekernel 420 acts as an abstraction layer between the hardware and theother software layers, consistent with some embodiments. For example,the kernel 420 provides memory management, processor management (e.g.,scheduling), component management, networking, and security settings,among other functionality. The services 422 can provide other commonservices for the other software layers. The drivers 424 are responsiblefor controlling or interfacing with the underlying hardware, accordingto some embodiments. For instance, the drivers 424 can include displaydrivers, camera drivers. BLUETOOTH® or BLUETOOTH® Low Energy drivers,flash memory drivers, serial communication drivers (e.g., UniversalSerial Bus (USB) drivers). WI-FI® drivers, audio drivers, powermanagement drivers, and so forth.

In some embodiments, the libraries 406 provide a low-level commoninfrastructure utilized by the applications 410. The libraries 406 caninclude system libraries 430 (e.g., C standard library) that can providefunctions such as memory allocation functions, string manipulationfunctions, mathematic functions, and the like. In addition, thelibraries 406 can include API libraries 432 such as media libraries(e.g., libraries to support presentation and manipulation of variousmedia formats such as Moving Picture Experts Group-4 (MPEG4), AdvancedVideo Coding (H.264 or AVC), Moving Picture Experts Group Layer-3 (MP3),Advanced Audio Coding (AAC), Adaptive Multi-Rate (AMR) audio codec.Joint Photographic Experts Group (JPEG or JPG), or Portable NetworkGraphics (PNG)), graphics libraries (e.g., an OpenGL framework used torender in two dimensions (2D) and three dimensions (3D) in graphiccontent on a display), database libraries (e.g., SQLite to providevarious relational database functions), web libraries (e.g., WebKit toprovide web browsing functionality), and the like. The libraries 406 canalso include a wide variety of other libraries 434 to provide many otherAPIs to the applications 410.

The frameworks 408 provide a high-level common infrastructure that canbe utilized by the applications 410, according to some embodiments. Forexample, the frameworks 408 provide various graphic user interface (GUI)functions, high-level resource management, high-level location services,and so forth. The frameworks 408 can provide a broad spectrum of otherAPIs that can be utilized by the applications 410, some of which may bespecific to a particular operating system 404 or platform.

In an example embodiment, the applications 410 include a homeapplication 450, a contacts application 452, a browser application 454,a book reader application 456, a location application 458, a mediaapplication 460, a messaging application 462, a game application 464,and a broad assortment of other applications such as a third partyapplications 466 and 467. According to some embodiments, theapplications 410 are programs that execute functions defined in theprograms. Various programming languages can be employed to create one ormore of the applications 410, structured in a variety of manners, suchas object-oriented programming languages (e.g., Objective-C, Java, orC++) or procedural programming languages (e.g., C or assembly language).In a specific example, the third party application 466 (e.g., anapplication developed using the ANDROID™ or IOS™ software developmentkit (SDK) by an entity other than the vendor of the particular platform)may be mobile software running on a mobile operating system such asIOS™, ANDROID™, WINDOWS® Phone, or another mobile operating system. Inthis example, the third party application 466 can invoke the API calls412 provided by the operating system 404 to facilitate functionalitydescribed herein.

As explained above, some embodiments may particularly include amessaging application 462. In certain embodiments, this may be astand-alone application that operates to manage communications with aserver system such as server system 102. In other embodiments, thisfunctionality may be integrated with another application such as a mediacontent editing application 467. Messaging application 462 may requestand display various media content items and may provide the capabilityfor a user to input data related to media content items via a touchinterface, keyboard, or using a camera device of machine 500,communication with a server system via I/O components 550, and receiptand storage of media content items in memory 530. Presentation of mediacontent items and user inputs associated with media content items may bemanaged by messaging application 462 using different frameworks 408,library 406 elements, or operating system 404 elements operating on amachine 500.

FIG. 5 is a block diagram illustrating components of a machine 500,according to some embodiments, able to read instructions from amachine-readable medium (e.g., a machine-readable storage medium) andperform any one or more of the methodologies discussed herein.Specifically, FIG. 5 shows a diagrammatic representation of the machine500 in the example form of a computer system, within which instructions516 (e.g., software, a program, an application 410, an applet, an app,or other executable code) for causing the machine 500 to perform any oneor more of the methodologies discussed herein can be executed. Inalternative embodiments, the machine 500 operates as a standalone deviceor can be coupled (e.g., networked) to other machines. In a networkeddeployment, the machine 500 may operate in the capacity of a servermachine 102, 120, 122, 124, etc. or a client device 110 in aserver-client network environment, or as a peer machine in apeer-to-peer (or distributed) network environment. The machine 500 cancomprise, but not be limited to, a server computer, a client computer, apersonal computer (PC), a tablet computer, a laptop computer, a netbook,a personal digital assistant (PDA), an entertainment media system, acellular telephone, a smart phone, a mobile device, a wearable device(e.g., a smart watch), a smart home device (e.g., a smart appliance),other smart devices, a web appliance, a network router, a networkswitch, a network bridge, or any machine capable of executing theinstructions 516, sequentially or otherwise, that specify actions to betaken by the machine 500. Further, while only a single machine 500 isillustrated, the term “machine” shall also be taken to include acollection of machines 500 that individually or jointly execute theinstructions 516 to perform any one or more of the methodologiesdiscussed herein.

In various embodiments, the machine 500 comprises processors 510, memory530, and I/O components 550, which can be configured to communicate witheach other via a bus 502. In an example embodiment, the processors 510(e.g., a central processing unit (CPU), a reduced instruction setcomputing (RISC) processor, a complex instruction set computing (CISC)processor, a graphics processing unit (GPU), a digital signal processor(DSP), an application specific integrated circuit (ASIC), aradio-frequency integrated circuit (RFIC), another processor, or anysuitable combination thereof) include, for example, a processor 512 anda processor 514 that may execute the instructions 516. The term“processor” is intended to include multi-core processors 510 that maycomprise two or more independent processors 512, 514 (also referred toas “cores”) that can execute instructions 516 contemporaneously.Although FIG. 5 shows multiple processors 510, the machine 500 mayinclude a single processor 510 with a single core, a single processor510 with multiple cores (e.g., a multi-core processor 510), multipleprocessors 512, 514 with a single core, multiple processors 510, 512with multiples cores, or any combination thereof.

The memory 530 comprises a main memory 532, a static memory 534, and astorage unit 536 accessible to the processors 510 via the bus 502,according to some embodiments. The storage unit 536 can include amachine-readable medium 538 on which are stored the instructions 516embodying any one or more of the methodologies or functions describedherein. The instructions 516 can also reside, completely or at leastpartially, within the main memory 532, within the static memory 534,within at least one of the processors 510 (e.g., within the processor'scache memory), or any suitable combination thereof, during executionthereof by the machine 500. Accordingly, in various embodiments, themain memory 532, the static memory 534, and the processors 510 areconsidered machine-readable media 538.

As used herein, the term “memory” refers to a machine-readable medium538 able to store data temporarily or permanently and may be taken toinclude, but not be limited to, random-access memory (RAM), read-onlymemory (ROM), buffer memory, flash memory, and cache memory. While themachine-readable medium 538 is shown, in an example embodiment, to be asingle medium, the term “machine-readable medium” should be taken toinclude a single medium or multiple media (e.g., a centralized ordistributed database, or associated caches and servers) able to storethe instructions 516. The term “machine-readable medium” shall also betaken to include any medium, or combination of multiple media, that iscapable of storing instructions (e.g., instructions 516) for executionby a machine (e.g., machine 500), such that the instructions 516, whenexecuted by one or more processors of the machine 500 (e.g., processors510), cause the machine 500 to perform any one or more of themethodologies described herein. Accordingly, a “machine-readable medium”refers to a single storage apparatus or device, as well as “cloud-based”storage systems or storage networks that include multiple storageapparatus or devices. The term “machine-readable medium” shallaccordingly be taken to include, but not be limited to, one or more datarepositories in the form of a solid-state memory (e.g., flash memory),an optical medium, a magnetic medium, other non-volatile memory (e.g.,erasable programmable read-only memory (EPROM)), or any suitablecombination thereof. The term “machine-readable medium” specificallyexcludes non-statutory signals per se.

The I/O components 550 include a wide variety of components to receiveinput, provide output, produce output, transmit information, exchangeinformation, capture measurements, and so on. In general, it will beappreciated that the I/O components 550 can include many othercomponents that are not shown in FIG. 5. The I/O components 550 aregrouped according to functionality merely for simplifying the followingdiscussion, and the grouping is in no way limiting. In various exampleembodiments, the I/O components 550 include output components 552 andinput components 554. The output components 552 include visualcomponents (e.g., a display such as a plasma display panel (PDP), alight emitting diode (LED) display, a liquid crystal display (LCD), aprojector, or a cathode ray tube (CRT)), acoustic components (e.g.,speakers), haptic components (e.g., a vibratory motor), other signalgenerators, and so forth. The input components 554 include alphanumericinput components (e.g., a keyboard, a touch screen configured to receivealphanumeric input, a photo-optical keyboard, or other alphanumericinput components), point-based input components (e.g., a mouse, atouchpad, a trackball, a joystick, a motion sensor, or other pointinginstruments), tactile input components (e.g., a physical button, a touchscreen that provides location and force of touches or touch gestures, orother tactile input components), audio input components (e.g., amicrophone), and the like.

In some further example embodiments, the I/O components 550 includebiometric components 556, motion components 558, environmentalcomponents 560, or position components 562, among a wide array of othercomponents. For example, the biometric components 556 include componentsto detect expressions (e.g., hand expressions, facial expressions, vocalexpressions, body gestures, or eye tracking), measure biosignals (e.g.,blood pressure, heart rate, body temperature, perspiration, or brainwaves), identify a person (e.g., voice identification, retinalidentification, facial identification, fingerprint identification, orelectroencephalogram based identification), and the like. The motioncomponents 558 include acceleration sensor components (e.g.,accelerometer), gravitation sensor components, rotation sensorcomponents (e.g., gyroscope), and so forth. The environmental components560 include, for example, illumination sensor components (e.g.,photometer), temperature sensor components (e.g., one or morethermometers that detect ambient temperature), humidity sensorcomponents, pressure sensor components (e.g., barometer), acousticsensor components (e.g., one or more microphones that detect backgroundnoise), proximity sensor components (e.g., infrared sensors that detectnearby objects), gas sensor components (e.g., machine olfactiondetection sensors, gas detection sensors to detect concentrations ofhazardous gases for safety or to measure pollutants in the atmosphere),or other components that may provide indications, measurements, orsignals corresponding to a surrounding physical environment. Theposition components 562 include location sensor components (e.g., aGlobal Positioning System (GPS) receiver component), altitude sensorcomponents (e.g., altimeters or barometers that detect air pressure fromwhich altitude may be derived), orientation sensor components (e.g.,magnetometers), and the like.

Communication can be implemented using a wide variety of technologies.The I/O components 550 may include communication components 564 operableto couple the machine 500 to a network 580 or devices 570 via a coupling582 and a coupling 572, respectively. For example, the communicationcomponents 564 include a network interface component or another suitabledevice to interface with the network 580. In further examples,communication components 564 include wired communication components,wireless communication components, cellular communication components,near field communication (NFC) components, BLUETOOTH® components (e.g.,BLUETOOTH® Low Energy), WI-FI® components, and other communicationcomponents to provide communication via other modalities. The devices570 may be another machine 500 or any of a wide variety of peripheraldevices (e.g., a peripheral device coupled via a Universal Serial Bus(USB)).

Moreover, in some embodiments, the communication components 564 detectidentifiers or include components operable to detect identifiers. Forexample, the communication components 564 include radio frequencyidentification (RFID) tag reader components, NFC smart tag detectioncomponents, optical reader components (e.g., an optical sensor to detecta one-dimensional bar codes such as a Universal Product Code (UPC) barcode, multi-dimensional bar codes such as a Quick Response (QR) code,Aztec Code. Data Matrix, Dataglyph, MaxiCode, PDF417, Ultra Code,Uniform Commercial Code Reduced Space Symbology (UCC RSS)-2D bar codes,and other optical codes), acoustic detection components (e.g.,microphones to identify tagged audio signals), or any suitablecombination thereof. In addition, a variety of information can bederived via the communication components 564, such as location viaInternet Protocol (IP) geo-location, location via WI-FI® signaltriangulation, location via detecting a BLUETOOTH® or NFC beacon signalthat may indicate a particular location, and so forth.

In various example embodiments, one or more portions of the network 580can be an ad hoc network, an intranet, an extranet, a virtual privatenetwork (VPN), a local area network (LAN), a wireless LAN (WLAN), a widearea network (WAN), a wireless WAN (WWAN), a metropolitan area network(MAN), the Internet, a portion of the Internet, a portion of the publicswitched telephone network (PSTN), a plain old telephone service (POTS)network, a cellular telephone network, a wireless network a WI-FI®network, another type of network, or a combination of two or more suchnetworks. For example, the network 580 or a portion of the network 580may include a wireless or cellular network, and the coupling 582 may bea Code Division Multiple Access (CDMA) connection, a Global System forMobile communications (GSM) connection, or another type of cellular orwireless coupling. In this example, the coupling 582 can implement anyof a variety of types of data transfer technology, such as SingleCarrier Radio Transmission Technology (1×RTT). Evolution-Data Optimized(EVDO) technology, General Packet Radio Service (GPRS) technology.Enhanced Data rates for GSM Evolution (EDGE) technology, thirdGeneration Partnership Project (3GPP) including 3G, fourth generationwireless (4G) networks, Universal Mobile Telecommunications System(UMTS), High Speed Packet Access (HSPA). Worldwide Interoperability forMicrowave Access (WiMAX), Long Term Evolution (LTE) standard, othersdefined by various standard-setting organizations, other long rangeprotocols, or other data transfer technology.

In example embodiments, the instructions 516 are transmitted or receivedover the network 580 using a transmission medium via a network interfacedevice (e.g., a network interface component included in thecommunication components 564) and utilizing any one of a number ofwell-known transfer protocols (e.g., Hypertext Transfer Protocol(HTTP)). Similarly, in other example embodiments, the instructions 516are transmitted or received using a transmission medium via the coupling572 (e.g., a peer-to-peer coupling) to the devices 570. The term“transmission medium” shall be taken to include any intangible mediumthat is capable of storing, encoding, or carrying the instructions 516for execution by the machine 500, and includes digital or analogcommunications signals or other intangible media to facilitatecommunication of such software.

Furthermore, the machine-readable medium 538 is non-transitory (in otherwords, not having any transitory signals) in that it does not embody apropagating signal. However, labeling the machine-readable medium 538“non-transitory” should not be construed to mean that the medium isincapable of movement; the medium 538 should be considered as beingtransportable from one physical location to another. Additionally, sincethe machine-readable medium 538 is tangible, the medium 538 may beconsidered to be a machine-readable device.

Throughout this specification, plural instances may implementcomponents, operations, or structures described as a single instance.Although individual operations of one or more methods are illustratedand described as separate operations, one or more of the individualoperations may be performed concurrently, and nothing requires that theoperations be performed in the order illustrated. Structures andfunctionality presented as separate components in example configurationsmay be implemented as a combined structure or component. Similarly,structures and functionality presented as a single component may beimplemented as separate components. These and other variations,modifications, additions, and improvements fall within the scope of thesubject matter herein.

Although an overview of the inventive subject matter has been describedwith reference to specific example embodiments, various modificationsand changes may be made to these embodiments without departing from thebroader scope of embodiments of the present disclosure

The embodiments illustrated herein are described in sufficient detail toenable those skilled in the art to practice the teachings disclosed.Other embodiments may be used and derived therefrom, such thatstructural and logical substitutions and changes may he made withoutdeparting from the scope of this disclosure. The Detailed Description,therefore, is not to be taken in a limiting sense, and the scope ofvarious embodiments is defined only by the appended claims, along withthe full range of equivalents to which such claims are entitled.

As used herein, the term “or” may be construed in either an inclusive orexclusive sense. Moreover, plural instances may be provided forresources, operations, or structures described herein as a singleinstance. Additionally, boundaries between various resources,operations, modules, engines, and data stores are somewhat arbitrary,and particular operations are illustrated in a context of specificillustrative configurations. Other allocations of functionality areenvisioned and may fall within a scope of various embodiments of thepresent disclosure. In general, structures and functionality presentedas separate resources in the example configurations may be implementedas a combined structure or resource. Similarly, structures andfunctionality presented as a single resource may be implemented asseparate resources. These and other variations, modifications,additions, and improvements fall within a scope of embodiments of thepresent disclosure as represented by the appended claims. Thespecification and drawings are, accordingly, to be regarded in anillustrative rather than a restrictive sense.

What is claimed is:
 1. A method comprising: receiving, at a servercomputer, a request from a first device for instructions to process aplurality of media content items, the request including a uniqueidentifier for each of the plurality of media content items;determining, using the unique identifier for each of the plurality ofmedia content items, a subset of the plurality of media content items tobe processed by the first device; generating instructions for processingthe subset of the plurality of media content items by the first device;sending the instructions to the first device; receiving a request fromthe first device to share the plurality of media content items with asecond device, the request including the unique identifier for each ofthe plurality of media content items to be shared, and processed mediacontent items for the subset of the plurality of media content items;generating a message including processed media content items for theplurality of media content items; and sending the generated message tothe second device.
 2. The method of claim 1, wherein the request fromthe first device for instructions to process a plurality of mediacontent items further includes untreated media content items, and themethod further comprises: storing the untreated media content items inone or more data storages; and wherein generating the message furtherincludes generating the message including processed media content itemsfor the untreated media content items.
 3. The method of claim 2, furthercomprising: processing the untreated media content items.
 4. The methodof claim 3, wherein the untreated media content items include videocontent and wherein processing the untreated media content itemscomprises transcoding the video content.
 5. The method of claim 1,wherein determining, using the unique identifier for each of theplurality of media content items, the subset of the plurality of mediacontent items to be processed by the first device comprises accessingone or more data storages to determine that each media content item ofthe subset of the plurality of media content items is not stored in theone or more data storages.
 6. The method of claim 1, further comprising:determining, using the unique identifier for each of the plurality ofmedia content items, a second subset of the plurality of media contentitems that are not to be processed by the first device by accessing oneor more data storages to determine that each media content item of thesecond subset of the plurality of media content items is stored in theone or more data storages.
 7. The method of claim 1, wherein the requestfrom the first device to share the plurality of media content items witha second device includes untreated media content items and wherein themethod further comprises: processing the untreated media content items;and storing the untreated media content items and the processeduntreated media content items in one or more data storages.
 8. Themethod of claim 1, wherein the plurality of media content items includesat least one from a group comprising: audio, video, and images.
 9. Themethod of claim 1, further comprising: storing the processed mediacontent items received from the first device for the subset of theplurality of media content items in one or more data storages.
 10. Themethod of claim 1, wherein generating a message comprises: accessing oneor more data storages to retrieve each media content item of theplurality of media content items; processing media content items not yetprocessed; and preparing a message that includes the processed mediacontent items for the plurality of media content items.
 11. A servercomputer comprising: a processor; and a computer readable medium coupledwith the processor, the computer readable medium comprising instructionsstored thereon that are executable by the processor to cause a computingdevice to perform operations comprising: receiving a request from afirst device for instructions to process a plurality of media contentitems, the request including a unique identifier for each of theplurality of media content items; determining, using the uniqueidentifier for each of the plurality of media content items, a subset ofthe plurality of media content items to be processed by the firstdevice; generating instructions for processing the subset of theplurality of media content items by the first device; sending theinstructions to the first device; receiving a request from the firstdevice to share the plurality of media content items with a seconddevice, the request including the unique identifier for each of theplurality of media content items to be shared, and processed mediacontent items for the subset of the plurality of media content items;generating a message including processed media content items for theplurality of media content items; and sending the generated message tothe second device.
 12. The server computer of claim 11, wherein therequest from the first device for instructions to process a plurality ofmedia content items further includes untreated media content items, andthe operations further comprise: storing the untreated media contentitems in one or more data storages; and wherein generating the messagefurther includes generating the message including processed mediacontent items for the untreated media content items.
 13. The servercomputer of claim 12, wherein the operations further comprise processingthe untreated media content items, and wherein the untreated mediacontent items include video content and wherein processing the untreatedmedia content items comprises transcoding the video content.
 14. Theserver computer of claim 11, wherein determining, using the uniqueidentifier for each of the plurality of media content items, the subsetof the plurality of media content items to be processed by the firstdevice comprises accessing one or more data storages to determine thateach media content item of the subset of the plurality of media contentitems is not stored in the one or more data storages.
 15. The servercomputer of claim 11, wherein the request from the first device to sharethe plurality of media content items with a second device includesuntreated media content items and wherein the operations furthercomprise: processing the untreated media content items; and storing theuntreated media content items and the processed untreated media contentitems in one or more data storages.
 16. The server computer of claim 11,wherein the plurality of media content items includes at least one froma group comprising: audio, video, and images.
 17. The server computer ofclaim 11, the operations further comprising: storing the processed mediacontent items received from the first device for the subset of theplurality of media content items in one or more data storages.
 18. Theserver computer of claim 11, wherein generating a message comprises:accessing one or more data storages to retrieve each media content itemof the plurality of media content items; processing media content itemsnot yet processed; and preparing a message that includes the processedmedia content items for the plurality of media content items.
 19. Anon-transitory computer readable medium comprising instructions storedthereon that are executable by at least one processor to cause acomputing device to perform operations comprising: receiving a requestfrom a first device for instructions to process a plurality of mediacontent items, the request including a unique identifier for each of theplurality of media content items; determining, using the uniqueidentifier for each of the plurality of media content items, a subset ofthe plurality of media content items to be processed by the firstdevice; generating instructions for processing the subset of theplurality of media content items by the first device; sending theinstructions to the first device; receiving a request from the firstdevice to share the plurality of media content items with a seconddevice, the request including the unique identifier for each of theplurality of media content items to be shared, and processed mediacontent items for the subset of the plurality of media content items;generating a message including processed media content items for theplurality of media content items; and sending the generated message tothe second device.
 20. The non-transitory computer readable medium ofclaim 19, wherein the request from the first device to share theplurality of media content items with a second device includes untreatedmedia content items and wherein the operations further comprise:processing the untreated media content items; and storing the untreatedmedia content items and the processed untreated media content items inone or more data storages.